package com.ruoyi.system.mapper;

import java.util.List;
import com.ruoyi.system.domain.ClubActivities;
import org.apache.ibatis.annotations.Param;

/**
 * 社团活动Mapper接口
 * 
 * @author ruoyi
 * @date 2025-06-25
 */
public interface ClubActivitiesMapper 
{
    /**
     * 查询社团活动
     * 
     * @param activityId 活动主键
     * @return 社团活动
     */
    public ClubActivities selectClubActivitiesByActivityId(Long activityId);

    /**
     * 查询社团活动列表
     *
     * @param clubActivities 社团活动
     * @param userId 用户ID
     * @param isAdmin 是否为管理员
     * @return 社团活动集合
     */
    public List<ClubActivities> selectClubActivitiesList(@Param("act") ClubActivities clubActivities, @Param("userId") Long userId, @Param("isAdmin") boolean isAdmin);

    /**
     * 根据社团ID查询活动列表
     *
     * @param clubId 社团ID
     * @return 社团活动集合
     */
    public List<ClubActivities> selectClubActivitiesByClubId(Long clubId);

    /**
     * 查询即将开始的活动
     * 
     * @param limit 限制数量
     * @return 社团活动集合
     */
    public List<ClubActivities> selectUpcomingActivities(@Param("limit") Integer limit);

    /**
     * 查询公开的活动列表（无权限控制）
     * 
     * @param clubActivities 社团活动
     * @return 社团活动集合
     */
    public List<ClubActivities> selectPublicActivitiesList(ClubActivities clubActivities);

    /**
     * 查询用户参与的活动
     *
     * @param userId 用户ID
     * @return 社团活动集合
     */
    public List<ClubActivities> selectUserParticipatedActivities(Long userId);

    /**
     * 新增社团活动
     * 
     * @param clubActivities 社团活动
     * @return 结果
     */
    public int insertClubActivities(ClubActivities clubActivities);

    /**
     * 修改社团活动
     * 
     * @param clubActivities 社团活动
     * @return 结果
     */
    public int updateClubActivities(ClubActivities clubActivities);

    /**
     * 删除社团活动
     * 
     * @param activityId 社团活动主键
     * @return 结果
     */
    public int deleteClubActivitiesByActivityId(Long activityId);

    /**
     * 批量删除社团活动
     * 
     * @param activityIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteClubActivitiesByActivityIds(Long[] activityIds);
}
